package com.atguigu.cms.service;

import com.atguigu.cms.dao.CustomerDao;
import com.atguigu.cms.javabean.Customer;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 * 这是一个具有管理功能的功能类. 内部数据不允许外部随意修改, 具有更好的封装性.
 */
public class CustomerService {


    private CustomerDao customerDao = new CustomerDao();

    /**
     * 用途：查询数据库客户集合
     * 返回：集合
     */
    public List<Customer> getList() throws SQLException, InstantiationException, IllegalAccessException, NoSuchFieldException {
        return customerDao.findAll();
    }


    /**
     * 用途：添加新客户
     * 参数：customer指定要添加的客户对象
     */
    public void addCustomer(Customer customer) throws SQLException {
        customerDao.addCustomer(customer);
       
    }

    /**
     * 用途：返回指定id的客户对象记录
     * 参数： id 就是要获取的客户的id号.
     * 返回：封装了客户信息的Customer对象
     */
    public Customer getCustomer(int id) throws SQLException, InstantiationException, IllegalAccessException, NoSuchFieldException {
        return customerDao.findById(id);
        
    }

    /**
     * 修改指定id号的客户对象的信息
     * @param id 客户id
     * @param cust 对象
     * @return 修改成功返回true, false表明指定id的客户未找到
     */
    public boolean modifyCustomer(int id, Customer cust) throws SQLException {
        int rows = customerDao.updateById(cust,id);
        if (rows>0){
            return true;
        }else {
            return false;
        }
    }

    /**
     * 用途：删除指定id号的的客户对象记录
     * 参数： id 要删除的客户的id号
     * 返回：删除成功返回true；false表示没有找到
     */
    public boolean removeCustomer(int id) throws SQLException {
        int rows = customerDao.removeCustomerById(id);
        if (rows>0){
            return true;
        }else {
            return false;
        }
    }

}
